package com.smile.service.entity.organization;

import com.alibaba.fastjson2.annotation.JSONField;

import java.util.List;

public class AirportBindErrorResult {

    @JSONField(name = "output")
    private BindErrorOutput output;

    @JSONField(name = "result")
    private int resultCode;

    // 嵌套类 - 绑定错误信息输出
    public static class BindErrorOutput {
        @JSONField(name = "err_infos")
        private List<ErrorInfo> errorInfos;

        // Getter & Setter
        public List<ErrorInfo> getErrorInfos() {
            return errorInfos;
        }

        public void setErrorInfos(List<ErrorInfo> errorInfos) {
            this.errorInfos = errorInfos;
        }

        @Override
        public String toString() {
            return "BindErrorOutput{" +
                    "errorInfos=" + errorInfos +
                    '}';
        }
    }

    // 嵌套类 - 错误信息详情
    public static class ErrorInfo {
        @JSONField(name = "err_code")
        private int errorCode;

        @JSONField(name = "sn")
        private String serialNumber;

        // Getters & Setters
        public int getErrorCode() {
            return errorCode;
        }

        public void setErrorCode(int errorCode) {
            this.errorCode = errorCode;
        }

        public String getSerialNumber() {
            return serialNumber;
        }

        public void setSerialNumber(String serialNumber) {
            this.serialNumber = serialNumber;
        }

        // 实用方法 - 获取错误描述
//        public String getErrorDescription() {
//            // 根据实际错误码体系完善此方法
//            switch (errorCode) {
//                case 210231:
//                    return "设备已绑定到其他组织";
//                default:
//                    return "未知错误 (" + errorCode + ")";
//            }
//        }

//        @Override
//        public String toString() {
//            return "ErrorInfo{" +
//                    "errorCode=" + errorCode + " (" + getErrorDescription() + ")" +
//                    ", serialNumber='" + serialNumber + '\'' +
//                    '}';
//        }
    }

    // Getters & Setters
    public BindErrorOutput getOutput() {
        return output;
    }

    public void setOutput(BindErrorOutput output) {
        this.output = output;
    }

    public int getResultCode() {
        return resultCode;
    }

    public void setResultCode(int resultCode) {
        this.resultCode = resultCode;
    }

    // 实用方法 - 判断操作是否成功 (0通常表示成功)
//    public boolean isSuccess() {
//        return resultCode == 0;
//    }

    // 实用方法 - 检查是否有错误信息
//    public boolean hasErrors() {
//        return output != null &&
//                output.getErrorInfos() != null &&
//                !output.getErrorInfos().isEmpty();
//    }

    // 实用方法 - 根据序列号查找错误信息
//    public ErrorInfo findErrorBySn(String sn) {
//        if (output != null && output.getErrorInfos() != null) {
//            return output.getErrorInfos().stream()
//                    .filter(error -> sn.equals(error.getSerialNumber()))
//                    .findFirst()
//                    .orElse(null);
//        }
//        return null;
//    }

    // 实用方法 - 获取所有错误序列号列表
//    public List<String> getAllErrorSNs() {
//        if (output != null && output.getErrorInfos() != null) {
//            return output.getErrorInfos().stream()
//                    .map(ErrorInfo::getSerialNumber)
//                    .toList();
//        }
//        return List.of();
//    }

    @Override
    public String toString() {
        return "AirportBindErrorResult{" +
                "output=" + output +
                ", resultCode=" + resultCode +
                '}';
    }
}